<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="SyNiJ" id="SyNiJ"><span data-lake-id="uea3fd970" id="uea3fd970">典型回答</span></h1>
  <p data-lake-id="u7f50688f" id="u7f50688f"><br></p>
  <ol list="u018f4487">
   <li fid="ue93da730" data-lake-id="u7c207521" id="u7c207521"><strong><span data-lake-id="u77e4b2fc" id="u77e4b2fc">考虑查询的频率和效率</span></strong><span data-lake-id="ua768839b" id="ua768839b">：在决定创建索引之前，需要分析查询频率和效率。对于频繁查询的列，可以创建索引来加速查询，但对于不经常查询或者数据量较少的列，可以不创建索引。</span></li>
  </ol>
  <p data-lake-id="u164aef9e" id="u164aef9e"><br></p>
  <ol list="u018f4487" start="2">
   <li fid="ue93da730" data-lake-id="u1c6cf021" id="u1c6cf021"><strong><span data-lake-id="u2d824b62" id="u2d824b62">选择适合的索引类型</span></strong><span data-lake-id="u532ad15a" id="u532ad15a">：MySQL提供了多种索引类型，如B+Tree索引、哈希索引和全文索引等。不同类型的索引适用于不同的查询操作，需要根据实际情况选择适合的索引类型。</span></li>
  </ol>
  <p data-lake-id="ubf6e797b" id="ubf6e797b"><br></p>
  <ol list="u018f4487" start="3">
   <li fid="ue93da730" data-lake-id="ua3ff11d9" id="ua3ff11d9"><strong><span data-lake-id="ub87fec2c" id="ub87fec2c">考虑区分度：</span></strong><span data-lake-id="u7fd3041c" id="u7fd3041c">尽量不要选择区分度不高的字段作为索引，比如性别。但是也并不绝对，对于一些数据倾斜比较严重的字段，虽然区分度不高，但是如果有索引，查询占比少的数据时效率也会提升。</span></li>
  </ol>
  <p data-lake-id="uf40db9a4" id="uf40db9a4"><br></p>
  <p data-lake-id="u6d53e028" id="u6d53e028"><br></p>
  <ol list="u018f4487" start="4">
   <li fid="ue93da730" data-lake-id="u6bc72b62" id="u6bc72b62"><strong><span data-lake-id="u53c52905" id="u53c52905">考虑联合索引</span></strong><span data-lake-id="u90a4b9c1" id="u90a4b9c1">：联合索引是将多个列组合在一起创建的索引。当多个列一起被频繁查询时，可以考虑创建联合索引。</span></li>
  </ol>
  <p data-lake-id="u55f33840" id="u55f33840"><br></p>
  <ol list="u018f4487" start="5">
   <li fid="ue93da730" data-lake-id="u17a50e9d" id="u17a50e9d"><strong><span data-lake-id="u6243aee3" id="u6243aee3">考虑索引覆盖：</span></strong><span data-lake-id="ubf0115cd" id="ubf0115cd">联合索引可以通过索引覆盖而避免回表查询，可以大大提升效率，对于频繁的查询，可以考虑将select后面的字段和where后面的条件放在一起创建联合索引。</span></li>
  </ol>
  <p data-lake-id="u49c15db0" id="u49c15db0"><span data-lake-id="uf5f918b9" id="uf5f918b9">​</span><br></p>
  <p data-lake-id="u8f89041b" id="u8f89041b"><br></p>
  <ol list="u018f4487" start="6">
   <li fid="ue93da730" data-lake-id="u8c5e7b3f" id="u8c5e7b3f"><strong><span data-lake-id="ubb62ef02" id="ubb62ef02">避免创建过多的索引</span></strong><span data-lake-id="u69c08d80" id="u69c08d80">：创建过多的索引会占用大量的磁盘空间，影响写入性能。并且在数据新增和删除时也需要对索引进行维护。所以在创建索引时，需要仔细考虑需要索引的列，避免创建过多的索引。</span></li>
  </ol>
  <p data-lake-id="u350f8212" id="u350f8212"><br></p>
  <p data-lake-id="u4ba0cb09" id="u4ba0cb09"><br></p>
  <ol list="u018f4487" start="7">
   <li fid="ue93da730" data-lake-id="ud87fd200" id="ud87fd200"><strong><span data-lake-id="ua284b4fa" id="ua284b4fa">避免使用过长的索引</span></strong><span data-lake-id="u735f0ce0" id="u735f0ce0">：索引列的长度越长，索引效率越低。在创建索引时，需要选择长度合适的列作为索引列。对于文本列，可以使用前缀索引来减少索引大小。</span></li>
  </ol>
  <p data-lake-id="ufdca6453" id="ufdca6453"><span data-lake-id="u6e64a95d" id="u6e64a95d">​</span><br></p>
  <ol list="u018f4487" start="8">
   <li fid="ue93da730" data-lake-id="ub017264f" id="ub017264f"><strong><span data-lake-id="u6592b7a4" id="u6592b7a4">合适的索引长度</span></strong><span data-lake-id="u290a55e6" id="u290a55e6">：虽然索引不建议太长，但是也要合理设置，如果设置的太短，比如身份证号，但是只把前面6位作为索引，那么可能会导致大量锁冲突。</span></li>
  </ol>
  <p data-lake-id="uf693ecd4" id="uf693ecd4"><br></p>
  <ol list="u018f4487" start="9">
   <li fid="ue93da730" data-lake-id="uba972cde" id="uba972cde"><strong><span data-lake-id="uf2fe2021" id="uf2fe2021">执行计划分析</span></strong><span data-lake-id="u3008503b" id="u3008503b">：多用执行计划分析，因为随着数据库的数据量变化、索引数量变化，最终使用的索引可能也不太一样，所以需要经常查看索引是否有使用对。</span></li>
  </ol>
  <p data-lake-id="ue7079b8b" id="ue7079b8b"><br></p>
  <p data-lake-id="u111535f8" id="u111535f8"><br></p>
 </body>
</html>